import axios from 'axios'
import {
	ElMessage,
	ElLoading
} from 'element-plus'

const service = axios.create({
	baseURL: import.meta.env.VITE_BASE_URL,
	timeout: 3 * 1000
})
let loadingInstance;
service.interceptors.request.use(config => {
	loadingInstance = ElLoading.service({
		lock: true,
		text: 'Loading',
		background: 'rgba(0, 0, 0, 0.7)',
	})
	config.data = JSON.stringify(config.data);
	config.headers = {
		'Content-Type': 'application/json'
	}
	return config
}, error => {
	Promise.reject(error);
})

service.interceptors.response.use(response => {
	loadingInstance.close();
	return response
}, error => {
	loadingInstance.close();
	if (error && error.response) {
		switch (error.response.status) {
			case 400:
				error.message = '错误请求'
				break;
			case 401:
				error.message = '未授权，请重新登录'
				break;
			case 403:
				error.message = '拒绝访问'
				break;
			case 404:
				error.message = '请求错误,未找到该资源'
				window.location.href = "/NotFound"
				break;
			case 405:
				error.message = '请求方法未允许'
				break;
			case 408:
				error.message = '请求超时'
				break;
			case 500:
				error.message = '服务器端出错'
				break;
			case 501:
				error.message = '网络未实现'
				break;
			case 502:
				error.message = '网络错误'
				break;
			case 503:
				error.message = '服务不可用'
				break;
			case 504:
				error.message = '网络超时'
				break;
			case 505:
				error.message = 'http版本不支持该请求'
				break;
			default:
				error.message = `连接错误${error.response.status}`
		}
		ElMessage.error(error.message)
	} else {
		if (JSON.stringify(error).includes('timeout')) { }
		error.message = '连接服务器失败'
		ElMessage.error(error.message)
	}
	return Promise.resolve(error.response)
})
export default service